package com.yifeng.repo.flink.data.transport.config;

import java.io.Serializable;

import lombok.Data;

@Data
public class JobParametersConfig implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * cdc任务名称
	 */
	private String cdcTaskname;

	/**
	 * flink source 的task并行度
	 */
	private Integer sourceParallelism;
	
	/**
	 * flink since 的task并行度
	 */
	private Integer sinkParallelism;
	
	/**
	 * 增量启动模式：initial、 earliest、 latest、 specificOffset、 timestamp
	 */
	private String startupMode;
	
	/**
	 * startupMode模式为timestamp时传入的时间戳
	 */
	private long startupTimestampMillis;
	
	/**
	 * startupMode模式为specificOffset传入的文件路径
	 */
	private String specificOffsetFile;
	
	/**
	 * startupMode模式为specificOffset传入的位点
	 */
	private int specificOffsetPos;
	
	/**
	 * Flink环境变量(并行度、checkpint配置)
	 */
	private StreamExecutionConfig streamExecutionConfig;
	
	/**
	 * 数据源source的相关配置
	 */
	private SourceDbConfig sourceDbConfig;
	
	/**
	 * kafka的相关配置
	 */
	private KafkaConfig kafkaConfig;
	
	/**
	 * 数据源sink的相关配置
	 */
	private SinkDbConfig sinkDbConfig;
	
	/**
	 * logminer读取最大批次大小
	 */
	private int maxBatchSize;
	
	/**
	 * 是否使用在线数据字典和continuous_mine
	 */
	private boolean isOnlineCatalog;
	
	/**
	 * 是否包含表结构变更
	 */
	private boolean includeSchemaChange;
	
	/**
	 * 表结构变更推送至下游
	 */
	private boolean schemaChangeToDownstream;
	
	/**
	 * 是否切换logfile
	 */
	private boolean switchLogfile;
	
	/**
	 * 切换logfile的间隔时间
	 */
	private long switchLogfileMinute;
	
	/**
	 * 是否动态加表
	 */
	private boolean scanNewlyAddedTableEnabled;

	/**
	 * 数据源sink到iceberg相关配置
	 */
	private SinkIcebergConfig sinkIcebergConfig;
}
